widget: Flip execution order of GTK_PHASE_TARGET/BUBBLE
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 22 May 2014 13:24:28 +0000 (15:24 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Fri, 23 May 2014 17:54:33 +0000 (19:54 +0200)
the "bubble" phase used to run before event handlers before GTK_PHASE_TARGET
was added, in order to keep phases in the expected order, move GTK_PHASE_BUBBLE
to be run (still invariably) after event handlers.

The only behavioral change should be wrt widgets wanting mixed event handler/
gesture handling, they could previously attach the gesture to the bubble phase
and check for gtk_gesture_is_active() in the event handler to bail out, they'll
have to use GTK_PHASE_CAPTURE for that purpose from now on.

gtk/gtkwidget.c

index 8793c6bb4f5503541511a3c28365bc4e31303939..4326bf6c9cd0cf009a626cfefbc5ecaff2bc63a6 100644 (file)
@@ -7557,7 +7557,6 @@ gtk_widget_event_internal (GtkWidget *widget,
 
   g_object_ref (widget);
 
-  return_val |= _gtk_widget_run_controllers (widget, event, GTK_PHASE_BUBBLE);
   g_signal_emit (widget, widget_signals[EVENT], 0, event, &handled);
   return_val |= handled | !WIDGET_REALIZED_FOR_EVENT (widget, event);
   if (!return_val)
@@ -7671,6 +7670,8 @@ gtk_widget_event_internal (GtkWidget *widget,
   else
     return_val = TRUE;
 
+  return_val |= _gtk_widget_run_controllers (widget, event, GTK_PHASE_BUBBLE);
+
   g_object_unref (widget);
 
   return return_val;